/*
-------------------------------------------------------------------
BIE is Copyright 2001-2003 Brunswick Corp.
-------------------------------------------------------------------
Please read the legal notices (docs/legal.txt) and the license
(docs/bie_license.txt) that came with this distribution before using
this software.
-------------------------------------------------------------------
*/
package com.webdeninteractive.sbie.config;

import java.io.File;
import java.io.IOException;

/**
 * Interface providing access to basic configuration data for the SBIE 
 * bootstrapping process.
 * <p>
 * The configuration API will be able to grow beyond this, but we
 * need to set access to certain startup-time data that should never
 * need runtime upgrades.
 *
 * @see SystemConfig
 *
 * @author Greg Fast <gfast@wdimail.com>
 * @version $Id: BootConfig.java,v 1.1.1.1 2003/05/20 16:56:49 gdf Exp $ 
 */
public interface BootConfig {

    /** @return location of the configuration file that this class accesses.
     */
    public File getLocation();

    /** Set the location of the source file for this configuration,
     *  and instantiate this object from it.
     *
     *  @param configFileLocation the location of the configuration 
     *         file that this class accesses.        
     *  @throws IOException if the given file cannot be read.
     */
    public void setLocation( File configFileLocation ) throws IOException;

    /** This returns the directory containing downloaded upgrade jars,
     *  which should be used by the bootstrapper's classloader.
     * @return a File object referring to the jarpit.
     */
    public File getUpgradeStoreLocation();

    /** This returns the name of the RemoteSystem (for
     *  RemoteSystemFactory) that the bootstrapper should create and
     *  run.  (The phrase "boot system" is used interchangeably
     *  for "initial RemoteSystem".)
     */
    public String getInitialRemoteSystemName();

    /** This returns the class name which implements the RemoteSystem
     *  that should be created and run by the bootstrapper.  The
     *  bootstrapper will register this with a RemoteSystemFactory,
     *  using the name given by getInitialRemoteSystemName().
     */
    public String getInitialRemoteSystemClassName();
    
}
